package com.cheng.algorithm.sort;

import java.util.Arrays;

/**
 * @User Administrator
 * @Classname InsertSort
 * @Project Data-structure-and-algorithm
 * @Description 插入排序代码优化
 * @Author wpcheng
 * @Create 2021-08-05-8:48
 * @Version 1.0
 */
public class InsertSortPlus {
    public static void main(String[] args) {
        int[] arr = {34,23,12,25};
        System.out.println("排序前：");
        System.out.println(Arrays.toString(arr));
        insertSort(arr);
        System.out.println("排序后：");
        System.out.println(Arrays.toString(arr));
    }

    public static void insertSort(int[] arr){

        //insertIndex >=0 保证数组下标不会越界，从insertIndex开始，往前索引，相当于insertValue往前一个个的进行比较
        //insertValue < arr[insertIndex] 当前数 insertValue 小于前面的数
        for (int i = 1; i < arr.length; i++) {
            int insertValue = arr[i];
            int insertIndex = i-1;
            while (insertIndex >=0 && insertValue < arr[insertIndex]){
                arr[insertIndex + 1] = arr[insertIndex]; //后移，把位置让出来
                insertIndex--; //下标前移
            }
            //当退出while循环时，说明已经找到了插入位置
            arr[insertIndex + 1] = insertValue;
        }





    }
}
